﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace iNet.Media.Imaging
{
	/// <summary>
	/// 實作 IImageMetadata 介面的影像中繼資料基底類別。
	/// </summary>
	public abstract class ImageMetadataBase : MetadataBase, IImageMetadata
	{
		#region 建構子
		/// <summary>
		/// 初始化新的 ImageMetadataBase 執行個體。
		/// </summary>
		protected ImageMetadataBase()
		{ }
		/// <summary>
		/// 初始化新的 ImageMetadataBase 執行個體。
		/// </summary>
		/// <param name="template">範本中繼資料。</param>
		/// <param name="isReadOnly">是否為唯讀。</param>
		protected ImageMetadataBase(IMetadata template, bool isReadOnly)
			: base(template, isReadOnly)
		{ }
		#endregion
		#region Aperture
		/// <summary>
		/// 取得或設定光圈值。
		/// </summary>
		public virtual double? Aperture
		{
			get
			{
				return null;
			}
			set
			{ }
		}
		#endregion
		#region CameraManufacturer
		/// <summary>
		/// 取得或設定相機製造商。
		/// </summary>
		public virtual string CameraManufacturer
		{
			get
			{
				return null;
			}
			set
			{ }
		}
		#endregion
		#region CameraModel
		/// <summary>
		/// 取得或設定相機型號。
		/// </summary>
		public virtual string CameraModel
		{
			get
			{
				return null;
			}
			set
			{ }
		}
		#endregion
		#region ExposureCompensation
		/// <summary>
		/// 取得或設定曝光補償值。
		/// </summary>
		public virtual double? ExposureCompensation
		{
			get
			{
				return null;
			}
			set
			{ }
		}
		#endregion
		#region ExposureProgram
		/// <summary>
		/// 取得或設定曝光程式。
		/// </summary>
		public virtual ExposureProgram? ExposureProgram
		{
			get
			{
				return null;
			}
			set
			{ }
		}
		#endregion
		#region FlashManufacturer
		/// <summary>
		/// 取得或設定閃光燈製造商。
		/// </summary>
		public virtual string FlashManufacturer
		{
			get
			{
				return null;
			}
			set
			{ }
		}
		#endregion
		#region FlashModel
		/// <summary>
		/// 取得或設定閃光燈型號。
		/// </summary>
		public virtual string FlashModel
		{
			get
			{
				return null;
			}
			set
			{ }
		}
		#endregion
		#region FlashState
		/// <summary>
		/// 取得或設定閃光燈狀態。
		/// </summary>
		public virtual FlashState? FlashState
		{
			get
			{
				return null;
			}
			set
			{ }
		}
		#endregion
		#region FocalLength
		/// <summary>
		/// 取得或設定實際焦距，單位為毫米 (mm)。
		/// </summary>
		public virtual double? FocalLength
		{
			get
			{
				return null;
			}
			set
			{ }
		}
		#endregion
		#region FocalLengthIn35mmFilm
		/// <summary>
		/// 取得或設定等效焦距，單位為毫米 (mm)。
		/// </summary>
		public virtual double? FocalLengthIn35mmFilm
		{
			get
			{
				return null;
			}
			set
			{ }
		}
		#endregion
		#region GeoCoordinate
		/// <summary>
		/// 取得或設定影像的地理座標。
		/// </summary>
		public virtual GeoCoordinate GeoCoordinate
		{
			get
			{
				return null;
			}
			set
			{ }
		}
		#endregion
		#region ISO
		/// <summary>
		/// 取得或設定 ISO 值。
		/// </summary>
		public virtual int? ISO
		{
			get
			{
				return null;
			}
			set
			{ }
		}
		#endregion
		#region LensManufacturer
		/// <summary>
		/// 取得或設定鏡頭製造商。
		/// </summary>
		public virtual string LensManufacturer
		{
			get
			{
				return null;
			}
			set
			{ }
		}
		#endregion
		#region LensModel
		/// <summary>
		/// 取得或設定鏡頭型號。
		/// </summary>
		public virtual string LensModel
		{
			get
			{
				return null;
			}
			set
			{ }
		}
		#endregion
		#region Orientation
		/// <summary>
		/// 取得或設定影像方向。
		/// </summary>
		public virtual ImageOrientation? Orientation
		{
			get
			{
				return null;
			}
			set
			{ }
		}
		#endregion
		#region People
		/// <summary>
		/// 取得或設定影像中的人員資訊。
		/// </summary>
		public virtual PersonRegion[] People
		{
			get
			{
				return null;
			}
			set
			{ }
		}
		#endregion
		#region ShutterSpeed
		/// <summary>
		/// 取得或設定快門速度。
		/// </summary>
		public virtual URational? ShutterSpeed
		{
			get
			{
				return null;
			}
			set
			{ }
		}
		#endregion
	}
}
